/*
 *
 *    Copyright (c) 2025 Project CHIP Authors
 *    All rights reserved.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

#include "AppTask.h"
#include "CHIPDeviceManager.h"

#include <app/util/attribute-storage.h>
/* Flag generated by Zap */
#ifdef MATTER_DM_PLUGIN_BINDING
#include "binding-handler.h"
#endif

using namespace chip;

void AppTask::PreInitMatterStack()
{
    ChipLogProgress(DeviceLayer, "Welcome to Zephyr Matter Light Demo App");
}

void AppTask::PostInitMatterStack()
{
/* Flag generated by Zap */
#ifdef MATTER_DM_PLUGIN_BINDING
    /* Init binding handlers */
    err = InitBindingHandlers();
    if (err != CHIP_NO_ERROR)
    {
        ChipLogError(DeviceLayer, "InitBindingHandlers failed: %" CHIP_ERROR_FORMAT, err.Format());
        goto exit;
    }
#endif
}

void AppTask::PostInitMatterServerInstance() {}

// This returns an instance of this class.
AppTask & AppTask::GetDefaultInstance()
{
    static AppTask sAppTask;
    return sAppTask;
}

chip::Zephyr::App::AppTaskBase & chip::Zephyr::App::GetAppTask()
{
    return AppTask::GetDefaultInstance();
}
